package com.booktrading.mapper;

import com.booktrading.model.CategoryOrderStat;
import com.booktrading.model.Order;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

@Mapper
public interface OrderMapper {
    
    // 新增订单
    int insert(Order order);
    
    // 根据ID查询订单
    Order selectById(Long id);
    
    // 根据订单号查询订单
    Order selectByOrderNo(String orderNo);
    
    // 更新订单信息
    int updateById(Order order);
    
    // 更新订单状态
    int updateStatus(@Param("id") Long id, @Param("status") Integer status);
    
    // 更新付款时间
    int updatePayTime(@Param("id") Long id, @Param("payTime") Date payTime);
    
    // 更新发货时间
    int updateShipTime(@Param("id") Long id, @Param("shipTime") Date shipTime);
    
    // 更新完成时间
    int updateCompleteTime(@Param("id") Long id, @Param("completeTime") Date completeTime);
    
    // 根据买家ID查询订单
    List<Order> selectByBuyerId(Long buyerId);
    
    // 根据卖家ID查询订单
    List<Order> selectBySellerId(Long sellerId);
    
    // 根据状态查询订单
    List<Order> selectByStatus(Integer status);
    
    // 查询所有订单
    List<Order> selectAll();
    
    // 根据时间范围查询订单
    List<Order> selectByTimeRange(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
    
    // 删除订单
    int deleteById(Long id);
    
    // 统计订单总数
    int countAll();
    
    // 统计订单总金额
    Double sumAllAmount();
    
    // 按分类统计订单
    List<CategoryOrderStat> countByCategory();
} 